package com.ssy.lingxi.member.merchant.model.bo;

import java.io.Serializable;
import java.util.List;

/**
 * Web - 用户登录后返回给前端页面的响应VO
 * @author 万宁
 * @version 2.0.0
 * @date 2020-07-01
 */
public class WebLoginBO implements Serializable {
    private static final long serialVersionUID = 6721514510668339007L;

    public WebLoginBO() {
    }

    public WebLoginBO(Long userId, Long memberId, String token, String account, String company, String name, Long tokenExpireMinutes, List<String> urls, List<LoginAuthBO> auth, Long memberRoleId, Integer memberType, Integer memberRoleType, String roleNames, Integer validateStatus, String validateStatusDesc, String validateMsg, Integer level, String levelTag, Integer score, Integer creditPoint, String logo, List<MemberRoleItem> roles) {
        this.userId = userId;
        this.memberId = memberId;
        this.token = token;
        this.account = account;
        this.company = company;
        this.name = name;
        this.tokenExpireMinutes = tokenExpireMinutes;
        this.memberRoleId = memberRoleId;
        this.memberType = memberType;
        this.memberRoleType = memberRoleType;
        this.roleNames = roleNames;
        this.validateStatus = validateStatus;
        this.validateStatusDesc = validateStatusDesc;
        this.validateMsg = validateMsg;
        this.level = level;
        this.levelTag = levelTag;
        this.score = score;
        this.creditPoint = creditPoint;
        this.logo = logo;
        this.urls = urls;
        this.auth = auth;
        this.roles = roles;
    }

    public WebLoginBO(Long userId, Long memberId, String token, String account, String company, String name, Long tokenExpireMinutes, List<String> urls, List<LoginAuthBO> auth, Long memberRoleId, Integer memberType, Integer memberRoleType, String roleNames, Integer validateStatus, String validateStatusDesc, String validateMsg, Integer level, String levelTag, Integer score, Integer creditPoint, String logo, List<MemberRoleItem> roles, Long orgId, String orgName) {
        this.userId = userId;
        this.memberId = memberId;
        this.token = token;
        this.account = account;
        this.company = company;
        this.name = name;
        this.tokenExpireMinutes = tokenExpireMinutes;
        this.memberRoleId = memberRoleId;
        this.memberType = memberType;
        this.memberRoleType = memberRoleType;
        this.roleNames = roleNames;
        this.validateStatus = validateStatus;
        this.validateStatusDesc = validateStatusDesc;
        this.validateMsg = validateMsg;
        this.level = level;
        this.levelTag = levelTag;
        this.score = score;
        this.creditPoint = creditPoint;
        this.logo = logo;
        this.urls = urls;
        this.auth = auth;
        this.roles = roles;
        this.orgId = orgId;
        this.orgName = orgName;
    }

    /**
     * 用户id (前端进行缓存，在Http Headers中添加)
     */
    private Long userId;

    /**
     * 用户所属会员Id (前端进行缓存，在Http Headers中添加)
     */
    private Long memberId;

    /**
     * 用户Token (前端进行缓存，在Http Headers中添加)
     */
    private String token;

    /**
     * 用户账号
     */
    private String account;

    /**
     * 会员名称（公司名称）
     */
    private String company;

    /**
     * 用户姓名
     */
    private String name;

    /**
     * Token过期时间（单位：分钟）
     */
    private Long tokenExpireMinutes;

    /**
     * 用户授权访问的前端页面Url列表
     */
    private List<String> urls;

    /**
     * 用户菜单和按钮权限
     */
    private List<LoginAuthBO> auth;

    /**
     * 用户当前的会员角色Id
     */
    private Long memberRoleId;

    /**
     * 用户当前的会员类型：1-企业会员，2-企业个人会员，3-渠道企业会员，4-渠道个人会员
     */
    private Integer memberType;

    /**
     * 用户当前的会员角色类型：1-服务提供者，2-服务消费者
     */
    private Integer memberRoleType;

    /**
     * 会员角色名称（多个角色名称以英文逗号分隔）
     */
    private String roleNames;

    /**
     * 审核状态枚举： 0-待提交审核，1-待审核，2-审核不通过， 3-审核通过
     */
    private Integer validateStatus;

    /**
     * 审核状态描述
     */
    private String validateStatusDesc;

    /**
     * 审核信息
     */
    private String validateMsg;

    /**
     * 会员等级
     */
    private Integer level;

    /**
     * 等级名称
     */
    private String levelTag;

    /**
     * 平台积分
     */
    private Integer score;

    /**
     * 平台会员信用积分
     */
    private Integer creditPoint;

    /**
     * 会员Logo Url
     */
    private String logo;

    /**
     * 会员角色列表，用于切换角色
     */
    private List<MemberRoleItem> roles;

    /**
     * 部门id
     */
    private Long orgId;

    /**
     * 部门名称
     */
    private String orgName;

    public static class MemberRoleItem implements Serializable{
        private static final long serialVersionUID = -8354030926838521763L;
        /**
         * 会员角色Id
         */
        private Long memberRoleId;

        /**
         * 会员角色名称
         */
        private String memberRoleName;

        /**
         * 会员角色类型，1-服务提供者，2-服务消费者
         */
        private Integer roleType;

        public Long getMemberRoleId() {
            return memberRoleId;
        }

        public void setMemberRoleId(Long memberRoleId) {
            this.memberRoleId = memberRoleId;
        }

        public String getMemberRoleName() {
            return memberRoleName;
        }

        public void setMemberRoleName(String memberRoleName) {
            this.memberRoleName = memberRoleName;
        }

        public Integer getRoleType() {
            return roleType;
        }

        public void setRoleType(Integer roleType) {
            this.roleType = roleType;
        }
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getMemberId() {
        return memberId;
    }

    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Long getTokenExpireMinutes() {
        return tokenExpireMinutes;
    }

    public void setTokenExpireMinutes(Long tokenExpireMinutes) {
        this.tokenExpireMinutes = tokenExpireMinutes;
    }

    public List<String> getUrls() {
        return urls;
    }

    public void setUrls(List<String> urls) {
        this.urls = urls;
    }

    public List<LoginAuthBO> getAuth() {
        return auth;
    }

    public void setAuth(List<LoginAuthBO> auth) {
        this.auth = auth;
    }

    public Long getMemberRoleId() {
        return memberRoleId;
    }

    public void setMemberRoleId(Long memberRoleId) {
        this.memberRoleId = memberRoleId;
    }

    public Integer getMemberType() {
        return memberType;
    }

    public void setMemberType(Integer memberType) {
        this.memberType = memberType;
    }

    public Integer getMemberRoleType() {
        return memberRoleType;
    }

    public void setMemberRoleType(Integer memberRoleType) {
        this.memberRoleType = memberRoleType;
    }

    public String getRoleNames() {
        return roleNames;
    }

    public void setRoleNames(String roleNames) {
        this.roleNames = roleNames;
    }

    public Integer getValidateStatus() {
        return validateStatus;
    }

    public void setValidateStatus(Integer validateStatus) {
        this.validateStatus = validateStatus;
    }

    public String getValidateStatusDesc() {
        return validateStatusDesc;
    }

    public void setValidateStatusDesc(String validateStatusDesc) {
        this.validateStatusDesc = validateStatusDesc;
    }

    public String getValidateMsg() {
        return validateMsg;
    }

    public void setValidateMsg(String validateMsg) {
        this.validateMsg = validateMsg;
    }

    public Integer getLevel() {
        return level;
    }

    public void setLevel(Integer level) {
        this.level = level;
    }

    public String getLevelTag() {
        return levelTag;
    }

    public void setLevelTag(String levelTag) {
        this.levelTag = levelTag;
    }

    public Integer getScore() {
        return score;
    }

    public void setScore(Integer score) {
        this.score = score;
    }

    public Integer getCreditPoint() {
        return creditPoint;
    }

    public void setCreditPoint(Integer creditPoint) {
        this.creditPoint = creditPoint;
    }

    public String getLogo() {
        return logo;
    }

    public void setLogo(String logo) {
        this.logo = logo;
    }

    public List<MemberRoleItem> getRoles() {
        return roles;
    }

    public void setRoles(List<MemberRoleItem> roles) {
        this.roles = roles;
    }

    public Long getOrgId() {
        return orgId;
    }

    public void setOrgId(Long orgId) {
        this.orgId = orgId;
    }

    public String getOrgName() {
        return orgName;
    }

    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
}
